<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>
    <style>
            body {
                margin: 0;
            }
            ul {
                padding: 0;
                margin: 0;
                list-style: none;
            }

            .map {
                width: 500px;
                height: 400px;
                background-color: skyblue;
				margin:50px auto;
            }

            .map ul {
                height: 100px;
            }
            .map ul li {
                width: 98px;
                height: 98px;
                border: 1px solid #ccc;
                float: left;
            }
            .map ul li.active {
                background-color: red;
            }

            .handle {
				width:300px;
				height:300px;
				margin : 0 auto;
            }
            .handle ul {
                height: 100px;
            }
            .handle ul li {
                width: 98px;
                height: 98px;
                border: 1px solid #ccc;
                float: left;
                text-align: center;
                line-height: 98px;
                font-size: 12px;
                color: #666;
                cursor: pointer;
            }
            .handle ul li:hover {
                background-color: #ddd;
            }
            .m_l_100 {
                margin-left: 100px;
            }
    </style>
</head>
<body>
    
    <!-- 地图 -->
    <div class="map">
        <!-- ul*4>li*5 -->
        <!-- 创建列表 -->
    </div>
    <!-- 手柄 -->
    <div class="handle">
        <ul>
            <li id="up" class="m_l_100">上</li>
        </ul>
        <ul>
            <li id="left">左</li>
            <li id="right" class="m_l_100">右</li>
        </ul>
        <ul>
            <li id="down" class="m_l_100">下</li>
        </ul>
    </div>

    <script>

        // 需求：
           // 1、利用JS在页面动态创建ul>li标签，实现4行5列排版（如图）
           // 2、利用数组合理记录所有创建的li标签 
           // 3、给 "上"，"下" ,"左","右"四个按钮绑定 点击事件
           // 4、通过点击按钮，根据方向切换元素的背景色


        //思考： 粉色的标签在第几行第几列 ?
        //      粉色的标签在第Y行第X列, 如何记录li标签?
        //     [
        //         [ (0,0),(0,1),(0,2) ],
        //         [ (1,0),(1,1),(1,2) ],
        //         [ (2,0),(2,1),(2,2) ],
        //     ]

        // 1、获取页面相关的元素
        var map = document.querySelector(".map");
        var el_up = document.querySelector("#up");
        var el_down = document.querySelector("#down");
        var el_left = document.querySelector("#left");
        var el_right = document.querySelector("#right");

        // 2、定义变量记录行和列
        var row = 4;
        var col = 5;

        // 3、定义大数组（二维数组）
        var elements = [];

        // 4、外循环
        for(var i = 0 ; i < row ; i ++){
            // 创建ul标签
            var ulCreate = document.createElement("ul");
            // 定义小数组
            var arr = [];
            // 内循环
            for(var j = 0 ; j < col ; j ++){
                // 创建li标签
                var liCreate = document.createElement("li");
                // 添加到ul标签上
                ulCreate.appendChild(liCreate);
                // 把li标签添加到arr数组
                arr.push(liCreate);
            }
            // 把ul标签添加到map标签
            map.appendChild(ulCreate);
            // 把arr添加到大数组里面
            elements.push(arr);
        }

        // 打印大数组
        console.log(elements);
        // 问题：找出第二(y)行第四(x)列?
        // elements[1][3].className = "active";

        // 编写函数
        // 添加类名
        var addClass = function(y,x){
            elements[y][x].className = "active";
        }
        // 移除类名
        var removeClass = function(y,x){
            elements[y][x].className = "";
        }

        // 测试
        // addClass(0,4)

        // 定义行和列的下标
        var y = 0 ;// 垂直位置
        var x = 0 ;// 水平位置

        // 初始化
        addClass(y,x);

        // 分别绑定事件
        // 向下
        el_down.onclick = function(){
            // 改变y的值
            y ++;
            // 判断是否超出范围
            if(y > (row -1)){
                y =  (row -1);
            }
            // 给指定下标的元素添加类名
            addClass(y,x);
            // 给指定下标的元素移除类名 
            removeClass(y-1,x);
        }

        // 向上
        el_up.onclick = function(){
            // 改变y的值
            y --;
            // 判断是否超出范围
            if(y < 0){
                y = 0 ;
            }
            // 给指定下标的元素添加类名
            addClass(y,x);
            // 给指定下标的元素移除类名 
            removeClass(y+1,x);
        }   

         // 向右
         el_right.onclick = function(){
            // 改变x的值
            x ++;
            // 判断是否超出范围
            if(x > (col -1)){
               x = col -1 ;
            }
            // 给指定下标的元素添加类名
            addClass(y,x);
            // 给指定下标的元素移除类名 
            removeClass(y,x-1);
        }

         // 向左
         el_left.onclick = function(){
            // 改变x的值
            x --;
            // 判断是否超出范围
            if(x < 0){
               x = 0 ;
            }
            // 给指定下标的元素添加类名
            addClass(y,x);
            // 给指定下标的元素移除类名 
            removeClass(y,x+1);
        }


    </script>
</body>
</html>